home *** CD-ROM | disk | FTP | other *** search
- /*************************************************************************
-
- CHKREG.C - Validates a key created by REGIT.C
-
- Donated to the Public Domain by Craig Morrison 12 May 1994, use,
- abuse, fold, spindle or mutilate anyway you see fit.
-
- *************************************************************************/
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <ctype.h>
-
- /* These should be the same as those used in REGIT.C */
-
- #define XOR_PRIME 0xFFFFFFFF
- #define XOR_CRYPT 0x13579ACE
- #define XOR_POST_CRYPT 0x2468BDF0
-
- /*************************************************************************
-
- CHKREG accepts two arguments on its command line; The key value in
- hexidecimal generated by REGIT and a string. You should end up with
- XOR_PRIME after the XOR manipulations, if not, then the given key
- was invalid.
-
- *************************************************************************/
-
- int main(int argc, char *argv[])
- {
- long keyval;
- long key;
- char *p;
- char buf[128];
-
- if (argc>2)
- {
- strcpy(buf, argv[1]);
- strupr(buf);
- sscanf(buf, "%8X", &keyval);
- keyval ^= XOR_POST_CRYPT;
-
- strcpy(buf, argv[2]);
- p = strrev(buf);
- while(*p)
- {
- if (*p=='_')
- *p = ' ';
-
- key = (long) toupper(*p);
- key ^= XOR_CRYPT;
- keyval ^= key;
- p++;
- }
- printf("Key value = %08X hex.\n", keyval);
- }
- return 0;
- }
-